package org.soderiakelvy.controller.producto;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.soderiakelvy.controller.util.Constante;
import org.soderiakelvy.model.domain.FrioCalorVO;
import org.soderiakelvy.model.service.ProductoServicio;
import org.soderiakelvy.model.service.imp.ProductoServicioImp;
import org.soderiakelvy.model.util.ConstantModel;

@ManagedBean
@ViewScoped
public class FrioCalorCreate {
	private FrioCalorVO frioCalor;
	private ProductoServicio service;
	
	private String deshabilitarGuardar;
	private boolean aguaDeRed;
	
	private boolean numeroSerieValido;
	private boolean marcaValido;
	private boolean modeloValido;
	
	public FrioCalorCreate(){
		iniciarVariales();
	}
	
	
	private void iniciarVariales(){
		frioCalor = new FrioCalorVO();
		service = new ProductoServicioImp();
		deshabilitarGuardar = "true";
		numeroSerieValido = false;
		marcaValido = false;
		modeloValido = false;
	}
	
	public String guardarFrioCalor(FrioCalorVO frioCalor){
		if(aguaDeRed){
			frioCalor.setAguaDeRed("SI");
		}else{
			frioCalor.setAguaDeRed("NO");
		}
		String resultAlta = service.insertFrioCalorVO(frioCalor);
		if (resultAlta.equals(ConstantModel.SUCCESS)){
			FacesContext.getCurrentInstance().addMessage("form1::messages", new FacesMessage(FacesMessage.SEVERITY_FATAL,"Error Interno", "nadar"));
			return Constante.URL_FRIO_CALOR_LIST;
		}else {
			FacesContext.getCurrentInstance().addMessage("form1::messages", new FacesMessage(FacesMessage.SEVERITY_FATAL,"Error Interno", "Ocurrio un error al intentar guardar un equipo Frio Calor"));
			return null;
		}
	}
	
	public void listenerNumeroSerie(){
		if (this.frioCalor.getNumeroDeSerie().isEmpty()||this.frioCalor.getNumeroDeSerie() ==null){
			this.deshabilitarGuardar = "true";
			this.numeroSerieValido = false;
			FacesContext.getCurrentInstance().addMessage("form1::errorNumeroSerie", 
					new FacesMessage(FacesMessage.SEVERITY_FATAL,"El Numero de Serie del Frio Calor no puede ser Vacio", ""));
		}else{
			
			if (service.existeNumeroSerieFrioCalor(this.frioCalor.getNumeroDeSerie().toUpperCase())){
				FacesContext.getCurrentInstance().addMessage("form1::errorNombre", 
						new FacesMessage(FacesMessage.SEVERITY_FATAL,"El Numero de Serie ya esta Registrado", ""));
				this.deshabilitarGuardar = "true";  
				this.numeroSerieValido = false;
			}else{ 
				this.numeroSerieValido = true;
				if (this.marcaValido && this.modeloValido) {
					this.deshabilitarGuardar = "false"; //HABILITO GUARDAR
				}
			}	
		}
	}
	
	
	public void listenerMarca(){
		if (this.frioCalor.getMarca().isEmpty() ||this.frioCalor.getMarca() == null){
			this.deshabilitarGuardar = "true";
			this.marcaValido = false;
			FacesContext.getCurrentInstance().addMessage("form1::errorMarca", 
					new FacesMessage(FacesMessage.SEVERITY_FATAL,"La Marca del Frio Calor no puede ser Vacia", ""));
		}else{
			this.marcaValido = true;
			if (this.numeroSerieValido && this.modeloValido) {
				this.deshabilitarGuardar = "false"; //HABILITO GUARDAR
			}	
		}
	}

	public void listenerModelo(){
		if (this.frioCalor.getModelo().isEmpty() ||this.frioCalor.getModelo() == null){
			this.deshabilitarGuardar = "true";
			this.modeloValido = false;
			FacesContext.getCurrentInstance().addMessage("form1::errorModelo", 
					new FacesMessage(FacesMessage.SEVERITY_FATAL,"El Modelo del Frio Calor no puede ser Vacio", ""));
		}else{
			this.modeloValido = true;
			if (this.numeroSerieValido && this.marcaValido) {
				this.deshabilitarGuardar = "false"; //HABILITO GUARDAR
			}	
		}
	}
	
	public String cancelar(){
		return Constante.URL_FRIO_CALOR_LIST;
	}

	public FrioCalorVO getFrioCalor() {
		return frioCalor;
	}

	public void setFrioCalor(FrioCalorVO frioCalor) {
		this.frioCalor = frioCalor;
	}

	public String getDeshabilitarGuardar() {
		return deshabilitarGuardar;
	}

	public void setDeshabilitarGuardar(String deshabilitarGuardar) {
		this.deshabilitarGuardar = deshabilitarGuardar;
	}

	public boolean getAguaDeRed() {
		return aguaDeRed;
	}

	public void setAguaDeRed(boolean aguaDeRed) {
		this.aguaDeRed = aguaDeRed;
	}
	
	
}
